home *** CD-ROM | disk | FTP | other *** search
/ By Popular Request 2.0 / By Popular Request 2.0 (Arsenal Computer).ISO / amiga_2 / cnetjam2.lha / CNetJam2 / cnet / pfiles / fido / BaseSizer < prev    next >
Text File  |  1995-01-27  |  4KB  |  93 lines

  1. /**************************************************************************\
  2.            $VER: Fido Base Sizes, v2.0 (27-Jan-95) by Dotoran!
  3. \**************************************************************************/
  4. options results;signal on SYNTAX;signal on ERROR;signal on IOERR
  5. tr=transmit;se=sendstring;gu=getuser;a='rexxsupport.library'
  6. if ~show('l',a) then if ~addlib(a,0,-30) then exit
  7.  
  8. ff="BASE1:"
  9.  
  10. /*  Change the "ff" variable above to the directory where you store your
  11.     networked bases. Recall I use Base1 for ONLY my Fido Echoes. This won't
  12.     function correctly if you have other bases in there as well. I mean,
  13.     it WILL function, but may look a bit odd with Local Bases mixed in.
  14.  
  15.     You need the "sort" and "delete" commands located somewhere in your
  16.     valid PATH assignment, as well as a RAM: assigned. You also need the
  17.     "rexxsupport.library" in your LIBS: directory.
  18.  
  19.     This file is also accessable through the NetUtils file located in this
  20.     directory as well. You can also add the following line to the bottom of
  21.     your Menu # 2; Available Everywhere Menu of your "cnet:bbsmenu" file:
  22.  
  23.                 SIZES  `1- | {*0base1:BaseSizes}
  24.                              ^
  25.                          Control-Q
  26.  
  27.     This file should be run at least once a day, but preferably right after
  28.     your TOSS finishes importing NEW messages. What I do is to create an
  29.     event to run one hour AFTER my polling event. It looks like this:
  30.  
  31.         Command: RunARexx
  32.            Args: pfiles:fido/BaseSizes
  33.       [port(s)]: 0                      (whatever works for you)
  34.            Type: Immediate--system idle or not
  35.            Days: Check ALL Seven
  36.            Time: 900                    (I poll at 8, so one hour later)
  37.           Valid: 100                    (Try to run between 9 and 10)
  38.        Interval: 1200                   (Run every 12 hours)
  39.         Iterate: 2                      (twice, so at 9AM and 9PM)
  40. */
  41.  
  42. /***** Code Starts Here *****/
  43.  
  44. f1=showdir(ff,"d");tr "f1Fido Base Sizesn1@4";c=0;b.=""
  45.  
  46. do i=1 to words(f1);f=word(f1,i);fn="base1:"||f||"/data/"
  47.   if ~exists(fn"_Text") then iterate i;tr f;f2=showdir(fn,"f");aa=0
  48.   do j=1 to words(f2);z=word(f2,j);a=word(statef(fn||z),2)
  49.     tr right(z,12)": "a" bytes.";aa=aa+a
  50.   end j;c=c+1;b.c=f""aa"x";tr
  51. end i
  52.  
  53. call open(f0,"ram:temp","w")
  54.     do i=1 to c;call writeln(f0,b.i);end i
  55. call close(f0)
  56.  
  57. address command "sort ram:temp ram:temp"
  58.  
  59. call open(f0,"ram:temp","r")
  60.     do i=1 to c;b.i=readln(f0);end i
  61. call close(f0)
  62.  
  63. address command "delete ram:temp"
  64.  
  65. call open(f1,ff"BaseSizes","w")
  66.   call writeln(f1,"f1z6c4"center("FIDO-Net Message Base Sizes",79)"z0")
  67.   call writeln(f1,"z6 z0cbr1 r0"left(" ",75)"r1 r0z6 z0")
  68.     c1=c%2;c2=c1;jj=0;if c1+c2~=c then do;c1=c1+1;jj=1;end
  69.     do i=1 to c1;j=i+c2+jj;co="ca";if i/2=i%2 then co="cd"
  70.       parse var b.i n1""b1""ju;call CNUM(b1);a1=a
  71.       z="z6 z0r1cb r0 "co||right(n1,14)" uses "right(a1,9)" bytes."
  72.       if b.j~="" then do;parse var b.j n2""b2""ju;call CNUM(b2);a2=a
  73.         z=z||right(n2,14)" uses "right(a2,9)" bytes.  r1cb r0z6 z0";end
  74.       else do;z=z||left(" ",38)"r1cb r0z6 z0";end;call writeln(f1,z)
  75.     end i
  76.   call writeln(f1,"z6 z0cbr1 r0"left(" ",75)"r1 r0z6 z0")
  77.   call writeln(f1,"z6c4"center("FIDO-Net Byte Size List Updated Daily",79)"z0")
  78. call close(f1)
  79.  
  80. se "*0"ff"basesizes}";exit
  81.  
  82. CNUM: /* Comma Number Parser (Place commas inside numbers) */
  83.   parse arg a;b=length(a);if b=4 then a=insert(",",a,1,1)
  84.   if b=5 then a=insert(",",a,2,1);if b=6 then a=insert(",",a,3,1)
  85.   if b=7 then do;a=insert(",",a,1,1);a=insert(",",a,5,1);end
  86.  return
  87.  
  88. SYNTAX:;ERROR:;IOERR:;e1=' c9Errorcf: ca'rc' cf(ca'errortext(rc)'cf)';e2='  c9Linecf: ce'left(sigl,4)'c9Filecf:'
  89.   gu 1311992;a=result;gu 1311960;b=result;c='cb"ce'a||b'cb"';e2=e2' 'c;tr e1;tr e2;logentry e1;logentry e2;e=sourceline(sigl)
  90.   do while e~='';e3='c9Sourcecf: cd'left(e,37);tr e3;logentry e3;e=substr(e,38);end;bufferflush;exit
  91. /** Last Edited: 27-Jan-95 ************************************************\
  92. \****************************************** FRONTIERS BBS (716)/823-9892 **/
  93.